#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:
    int maxTurbulenceSize(vector<int>& arr) {
        int n = arr.size();
        if (n == 1)
            return 1;
        vector<int> dp1(n + 1);
        auto dp2 = dp1;
        int ret = INT_MIN;
        for (int i = 1; i < n; i++) {
            if ((i - 1) % 2) {
                if (arr[i - 1] > arr[i]) {
                    dp1[i] = dp1[i - 1] + 1;

                }
                else if (arr[i - 1] < arr[i]) {
                    dp2[i] = dp2[i - 1] + 1;
                }
            }
            else {
                if (arr[i - 1] < arr[i]) {
                    dp1[i] = dp1[i - 1] + 1;
                }
                else if (arr[i - 1] > arr[i]) {
                    dp2[i] = dp2[i - 1] + 1;
                }
            }
            ret = max(max(dp1[i], dp2[i]) + 1, ret);
        }
        return ret;
    }
};